home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / keyboard.s < prev    next >
Text File  |  1997-11-28  |  4KB  |  131 lines

  1. *---------------------------------------------------------------------------*
  2. KInt_Init    ;VBR Assumed $0
  3. *---------------------------------------------------------------------------*
  4.         Move.l    #KInt_Main,$68.w    Install Interrupt 
  5.         And.b    #$3f,$bfe201        Set Timers
  6.         Move.b    #$7f,$bfed01
  7.         Move.b    $bfed01,d0
  8.         Move.b    #$88,$bfed01
  9. *---------------------------------------------------------------------------*
  10.         Lea    KInt_States(pc),a0    Map Of Key States (Up/Down)
  11.         Clr.l    (a0)+            Clear It (All Up)
  12.         Clr.l    (a0)+            
  13.         Clr.l    (a0)+            
  14.         Clr.l    (a0)+            
  15. *---------------------------------------------------------------------------*
  16.         St.b    KInt_CCode        
  17.         Move.b    #$a0,$bfee01        Start Timey Thing
  18.         Rts                And return
  19. *---------------------------------------------------------------------------*
  20. KInt_Main    
  21. *---------------------------------------------------------------------------*
  22.         Movem.l    d0/d1/a0/a1/a6,-(a7)    Stack everything
  23.         Move.w    #8,$dff09a        Temp Disable Int.
  24.         Move.w    $dff01e,d0        Intreqr
  25.         And.w    #8,d0            Mask Out All X^ K_Int
  26.     Beq    KInt_End            Not Keyboard Interrupt
  27. *---------------------------------------------------------------------------*
  28.         Lea    $bfed01,a6
  29.         Move.w    #$8,$dff09c        Clear Int.Request
  30.         Move.b    -$100(a6),d0        Move Raw Keyboard value
  31.         Ror.b    #1,d0            Roll to correct
  32.         Not.b    d0            
  33.         Move.b    d0,KInt_CCode        Save Corrected Keycode
  34. *---------------------------------------------------------------------------*
  35. .HandShake    Move.b    #8,(a6)
  36.         Move.b    #7,-$900(a6)
  37.         Move.b    #0,-$800(a6)
  38.         Move.b    #0,-$100(a6)
  39.         Move.b    #$d1,$100(a6)        
  40.         Tst.b    (a6)    
  41. .wait        Btst    #0,(a6)
  42.     Beq.s    .wait
  43.         Move.b    #$a0,$100(a6)        
  44.         Move.b    (a6),d0        
  45.         Move.b    #$88,(a6)
  46. *---------------------------------------------------------------------------*
  47.         Lea    KInt_2Ascii(pc),a0
  48.         Lea    KInt_KeyMap(pc),a1
  49.         Lea    KInt_States(pc),a6
  50.         Moveq.w    #0,d0
  51.         Move.b    KInt_CCode(pc),d0
  52.     Bmi.s    KInt_KeyUp            neg if up 
  53. *---------------------------------------------------------------------------*
  54. KInt_KeyDown
  55. *---------------------------------------------------------------------------*
  56.         Move.w    #$f00,$dff180        **Temp ColFlash
  57.         Move.b    (a0,d0.w),KInt_Askey    Ascii Value On Down Press
  58.         Moveq.w    #7,d1
  59.         And.w    d0,d1
  60.         Lsr.w    #3,d0
  61.         Not.w    d1
  62.         Btst.b    d1,(a1,d0.w)        Keymap Wether Key Included?
  63.     Bne.s    KInt_End
  64.         Bset.b    d1,(a6,d0.w)        
  65.     Bra    KInt_End
  66. *---------------------------------------------------------------------------*
  67. KInt_KeyUp
  68. *---------------------------------------------------------------------------*
  69.         Move.w    #$0f0,$dff180        **Temp ColFlash
  70.         And.w    #$7f,d0            Make code Positive
  71.         Moveq.w    #7,d1
  72.         And.w    d0,d1
  73.         Lsr.w    #3,d0
  74.         Not.w    d1
  75.         Btst.b    d1,(a1,d0.w)
  76.     Bne.s    KInt_End
  77.         Bclr.b    d1,(a6,d0.w)        If Key up Set Corr. State
  78. KInt_End    Movem.l    (a7)+,d0/d1/a0/a1/a6    Unstack Everything
  79.         Move.w    #$8008,$dff09a        Re-enable Int.
  80.         Rte
  81. *---------------------------------------------------------------------------*
  82. KInt_CCode    Ds.b    1
  83. KInt_Askey    Ds.b    1
  84. KInt_OCode    Ds.w    1
  85.  
  86. KInt_States    Ds.b    16        On/Off States Of Keys Bitwise
  87. KInt_KeyMap    Ds.b    16        Bitwise To Include In Any Processing
  88. KInt_2Ascii    ;Change KeyCode To Ascii 
  89.         Dc.b    " `  "," 1  "," 2  "," 3  "
  90.         dc.b    " 4  "," 5  "," 6  "," 7  "
  91.         dc.b    " 8  "," 9  "
  92.         Dc.b    " 0  "," -  "," +  "," \  "
  93.         dc.b     '    ','    '," q  "," w  "
  94.         dc.b    " e  "," r  "
  95.         Dc.b    " t  "," y  "," u  "," i  "
  96.         dc.b    " o  "," p  "," [  "," ]  "
  97.         dc.b    '    ','    '
  98.         Dc.b    '    ','    '," a  "," s  "
  99.         dc.b    " d  "," f  "," g  "," h  "
  100.         dc.b    " j  "," k  "
  101.         Dc.b    " l  "," ;  "," '  ",'    '
  102.         dc.b    '    ','    ','    ','    '
  103.         dc.b    '    '," z  "
  104.         Dc.b    " x  "," c  "," v  "," b  "
  105.         dc.b    " n  "," m  "," ,  "," .  "
  106.         dc.b     " /  ",'    '
  107.         Dc.b    '    ','    ','    ','    '
  108.         dc.b    " ",'    ','    ','    '
  109.         dc.b    '    ','    '
  110.         
  111.         Dc.b    '    ','    ','    ','    '
  112.         dc.b    'SPC ','<-- ','TAB ','    '
  113.         dc.b    'RTN ','ESC '
  114.         Dc.b    'DEL ','    ','    ','    '
  115.         dc.b    '    ','    ','[[[ ',']]] '
  116.         dc.b    '{{{ ','}}} '
  117.         Dc.b    'FK1 ','FK2 ','FK3 ','FK4 '
  118.         dc.b    'FK5 ','FK6 ','FK7 ','FK8 '
  119.         dc.b    'FK9 ','FK0 '
  120.         Dc.b    '    ','    ','    ','    '
  121.         dc.b    'HLP ','LSH ','RSH ','    '
  122.         dc.b    'CPL ','CTL '
  123.         Dc.b    'LAL ','RAL ','LAM ','RAM '
  124.         dc.b    '    ','    ','    ','    '
  125.         dc.b    '    ','    '
  126.         Dc.b    '    ','    ','    ','    '
  127.         dc.b    '    ','    ','    ','    '
  128.         dc.b    '    ','    '
  129.  
  130.  
  131.